<?php
    require_once ROOT . 'server/classes/arquitetura/controller/AbstractController.class.php';

    /**
     * Esta classe efetua todas as chamadas para execução do service.
     * @author Tiago <tiago.professor@gmail.com>
     */
    class CategoriaController extends AbstractController {

        /**
         * Executa o processamento principal
         * @author Tiago <tiago.professor@gmail.com>
         * @param type $objRequest
         */
        public function specificExecute($objRequest) {
            if($this->log->isDebugEnabled()) {
                $this->log->logDebug('Executando o método specificExecute()');
            }
            //Executando a chamada ao service.
            $this->getService()->execute();
        }

        /**
         * Popula os atributos desta classe
         * @author Tiago <tiago.professor@gmail.com>
         * @param type $objRequest
         */
        public function populandoAtributos($objRequest) {
            if($this->log->isDebugEnabled()) {
                $this->log->logDebug('Executando o método populandoAtributos()');
            }
            $categoria = CategoriaHelper::getObjFromRequest($objRequest);

            $model = new CategoriaModel();
            $model->setResult(new GenericResult());
            $model->setCategoria($categoria);
            $model->setAction(Util::getRequestVal($objRequest, 't'));//Ação que será executada.
            if(IService::PESQUISAR == $model->getAction()) {
                if($this->log->isDebugEnabled()) {
                    $this->log->logDebug('Action PESQUISA, populando atributos.');
                }
                $model->setPage(Util::getRequestVal($objRequest, 'page'));
                $model->setStart(Util::getRequestVal($objRequest, 'start'));
                $model->setLimit(Util::getRequestVal($objRequest, 'limit'));
            }

            $service = new CategoriaServiceDao();
            $service->setModel($model);

            $this->setModel($model);
            $this->setService($service);
        }

        /**
         * Efetua a validação dos dados recebidos pelo formulario
         * que estao no model.
         */
        public function isModelValido() {
            if($this->log->isDebugEnabled()) {
                $this->log->logDebug('Executando o método isModelValido()');
            }
            return CategoriaHelper::validarModel($this->getModel());
        }
    }
?>
